package br.com.sms.facade;

import java.util.Date;
import java.util.List;
import java.util.Set;

import javax.mail.Address;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;

import br.com.sms.dao.MalaDiretaDao;
import br.com.sms.dominio.Destinatario;
import br.com.sms.dominio.MalaDireta;
import br.com.sms.dominio.Mensagem;
import br.com.sms.email.SendMail;
import br.com.sms.excecao.SmsException;

public class MalaDiretaFacade {

	private MalaDiretaDao dao;

	public MalaDiretaFacade(){
		if(dao == null)
			dao = new MalaDiretaDao();
	}

	public MalaDireta salvar(MalaDireta malaDireta){
		return dao.salvar(malaDireta);
	}

	public List<MalaDireta> recuperarMalas(Mensagem mensagem){
		return dao.recuperarMalas(mensagem);
	}

	public MalaDireta recuperarMalaDireta(MalaDireta direta){
		return dao.recuperarMalaDireta(direta);
	}

	public void excluirMalaDireta(MalaDireta direta){
		dao.excluir(direta);
	}

	public List<MalaDireta> recuperarMalasDiretas(boolean isEnviada){
		return dao.recuperarMalasDiretas(isEnviada);
	}

	public boolean enviarEmail(MalaDireta malaDireta) throws AddressException, SmsException{
			int i = 0;
			SendMail sendMail = new SendMail();
			Set<Destinatario> dests = malaDireta.getDestinatarios();
			Address[] ads = new Address[dests.size()];

			for (Destinatario destinatario : dests) {

				if(destinatario.getEmail() != null 
						&& (destinatario.getEmail().trim().length() > 0 && destinatario.getEmail().trim().contains("@"))){
					ads[i] = new InternetAddress(destinatario.getEmail());
					i++;
				}
			}
			sendMail.sendMail(ads,malaDireta.getMensagem().getTituloMensagem(), malaDireta.getMensagem().getDescricaoMenssagem());
			malaDireta.setDataEnvioMalaDireta(new Date());
			salvar(malaDireta);
			return true;

		}
	}
